home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / proc / procps.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  113 lines

  1. #ifndef PROCPS_PROC_PROCPS_H
  2. #define PROCPS_PROC_PROCPS_H
  3.  
  4. #ifdef  __cplusplus
  5. #define EXTERN_C_BEGIN extern "C" {
  6. #define EXTERN_C_END }
  7. #else
  8. #define EXTERN_C_BEGIN
  9. #define EXTERN_C_END
  10. #endif
  11.  
  12. // Some ports make the mistake of running a 32-bit userspace
  13. // on a 64-bit kernel. Shame on them. It's not at all OK to
  14. // make everything "long long", since that causes unneeded
  15. // slowness on 32-bit hardware.
  16. //
  17. // SPARC: The 32-bit kernel was looking like an ex-penguin,
  18. // but it lives! ("I'm not dead yet.") So, 64-bit users will
  19. // just have to compile for 64-bit. Aw, the suffering.
  20. //
  21. // MIPS: Used 32-bit for embedded systems and obsolete hardware.
  22. // The 64-bit systems use an n32 format executable, defining
  23. // _ABIN32 to indicate this. Since n32 doesn't currently run on
  24. // any 32-bit system, nobody get hurt if it's bloated. Not that
  25. // this is sane of course, but it won't hurt the 32-bit users.
  26. // __mips_eabi means eabi, which comes in both sizes, but isn't used.
  27. //
  28. // PowerPC: Big ugly problem! 32-bit Macs are still popular. :-/
  29. //
  30. // x86-64: So far, nobody has been dumb enough to go 32-bit.
  31. //
  32. // Unknown: PA-RISC and zSeries
  33. //
  34. #if defined(k64test) || defined(_ABIN32)
  35. #define KLONG long long    // not typedef; want "unsigned KLONG" to work
  36. #define KLF "L"
  37. #define STRTOUKL strtoull
  38. #else
  39. #define KLONG long
  40. #define KLF "l"
  41. #define STRTOUKL strtoul
  42. #endif
  43.  
  44. // since gcc-2.5
  45. #define NORETURN __attribute__((__noreturn__))
  46. #define FUNCTION __attribute__((__const__))  // no access to global mem, even via ptr, and no side effect
  47.  
  48. #if !defined(restrict) && __STDC_VERSION__ < 199901
  49. #if __GNUC__ > 2 || __GNUC_MINOR__ >= 92
  50. #define restrict __restrict__
  51. #else
  52. #warning No restrict keyword?
  53. #define restrict
  54. #endif
  55. #endif
  56.  
  57. #if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
  58. // won't alias anything, and aligned enough for anything
  59. #define MALLOC __attribute__ ((__malloc__))
  60. // no side effect, may read globals
  61. #define PURE __attribute__ ((__pure__))
  62. // tell gcc what to expect:   if(unlikely(err)) die(err);
  63. #define likely(x)       __builtin_expect(!!(x),1)
  64. #define unlikely(x)     __builtin_expect(!!(x),0)
  65. #define expected(x,y)   __builtin_expect((x),(y))
  66. #else
  67. #define MALLOC
  68. #define PURE
  69. #define likely(x)       (x)
  70. #define unlikely(x)     (x)
  71. #define expected(x,y)   (x)
  72. #endif
  73.  
  74. #if SHARED==1 && (__GNUC__ > 2 || __GNUC_MINOR__ >= 96)
  75. #define LABEL_OFFSET
  76. #endif
  77.  
  78. #define STRINGIFY_ARG(a)    #a
  79. #define STRINGIFY(a)        STRINGIFY_ARG(a)
  80.  
  81. // marks old junk, to warn non-procps library users
  82. #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
  83. #define OBSOLETE __attribute__((deprecated))
  84. #else
  85. #define OBSOLETE
  86. #endif
  87.  
  88. #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 1 ) || __GNUC__ > 3
  89. // Tells gcc that function is library-internal;
  90. // so no need to do dynamic linking at run-time.
  91. // This might work with slightly older compilers too.
  92. #define HIDDEN __attribute__((visibility("hidden")))
  93. // The opposite, in case -fvisibility=hidden used
  94. #define EXPORT __attribute__((visibility("default")))
  95. // Tell g++ that a function won't throw exceptions.
  96. #define NOTHROW __attribute__((__nothrow__))
  97. #else
  98. #define HIDDEN
  99. #define EXPORT
  100. #define NOTHROW
  101. #endif
  102.  
  103. // Like HIDDEN, but for an alias that gets created.
  104. // In gcc-3.2 there is an alias+hidden conflict.
  105. // Many will have patched this bug, but oh well.
  106. #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 2 ) || __GNUC__ > 3
  107. #define HIDDEN_ALIAS(x) extern __typeof(x) x##_direct __attribute__((alias(#x),visibility("hidden")))
  108. #else
  109. #define HIDDEN_ALIAS(x) extern __typeof(x) x##_direct __attribute__((alias(#x)))
  110. #endif
  111.  
  112. #endif
  113.